<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Threaded binary tree</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Threaded_binary_tree"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Threaded_binary_tree rootpage-Threaded_binary_tree skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Threaded binary tree</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="Computing" title="Computing">computing</a>, a <b>threaded binary tree</b> is a <a href="Binary_tree" title="Binary tree">binary tree</a> variant that facilitates <a href="Tree_traversal" title="Tree traversal">traversal</a> in a particular order.
</p><p>An entire binary search tree can be easily traversed in order of the main key but given only a <a href="Pointer_(computer_programming)" title="Pointer (computer programming)">pointer</a> to a <a href="Node_(computer_science)" title="Node (computer science)">node</a>, finding the node which comes next may be slow or impossible. For example, leaf nodes by definition have no descendants, so given only a pointer to a leaf node no other node can be reached. A threaded tree adds extra information in some or all nodes, so that for any given single node the "next" node can be found quickly, allowing tree traversal without recursion and the extra storage (proportional to the tree's depth) that recursion requires.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Threading">Threading</h2></div>
<blockquote>
<p>"A binary tree is <i>threaded</i> by making all right child pointers that would normally be null point to the in-order successor of the node (<b>if</b> it exists), and all left child pointers that would normally be null point to the in-order predecessor of the node."<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
</blockquote>
<p>This assumes the traversal order is the same as <a href="In-order_traversal" class="mw-redirect" title="In-order traversal">in-order</a> traversal of the tree. However, pointers can instead (or in addition) be added to tree nodes, rather than replacing. <a href="Linked_lists" class="mw-redirect" title="Linked lists">Linked lists</a> thus defined are also commonly called "threads", and can be used to enable traversal in any order(s) desired. For example, a tree whose nodes represent information about people might be sorted by name, but have extra threads allowing quick traversal in order of birth date, weight, or any other known characteristic.
</p>
<div class="mw-heading mw-heading2"><h2 id="Motivation">Motivation</h2></div>
<p>Trees, including (but not limited to) <a href="Binary_search_tree" title="Binary search tree">binary search trees</a>, can be used to store items in a particular order, such as the value of some property stored in each node, often called a <a href="Key_value" class="mw-redirect" title="Key value">key</a>. One useful operation on such a tree is <i>traversal</i>: visiting all the items in order of the key.
</p><p>A simple recursive traversal algorithm that visits each node of a <a href="Binary_search_tree" title="Binary search tree">binary search tree</a> is the following. Assume <span class="texhtml mvar" style="font-style:italic;">t</span> is a pointer to a node, or <span class="texhtml">nil</span>. "Visiting" <span class="texhtml mvar" style="font-style:italic;">t</span> can mean performing any action on the node <span class="texhtml mvar" style="font-style:italic;">t</span> or its contents.
</p>
<div style="margin-left: 35px; width: 600px">
<style data-mw-deduplicate="TemplateStyles:r1269837509">
/* start https://en.wikipedia.org/ */
.mw-parser-output .framebox-container{margin-bottom:1.25em}.mw-parser-output .framebox-header{height:8px;margin:0;border:0;padding:0;font-size:1px}.mw-parser-output .framebox-inner{padding:5px;font-size:85%}
/* end https://en.wikipedia.org/ */
</style>
<div class="framebox-container" style="width: auto; margin-left: auto; border:1px solid #8898BF; background: transparent; color: var(--color-base, #202122)">
<div class="framebox-header" style="border-bottom:1px solid #8898BF; background: #C8D8FF"></div>
<div class="framebox-inner">
<p>Algorithm traverse(<span class="texhtml mvar" style="font-style:italic;">t</span>):
</p>
<ul><li>Input: a pointer <span class="texhtml mvar" style="font-style:italic;">t</span> to a node (or <span class="texhtml">nil</span>)</li>
<li>If <span class="texhtml"><i>t</i> = nil</span>, return.</li>
<li>Else:
<ul><li>traverse(left-child(<span class="texhtml mvar" style="font-style:italic;">t</span>))</li>
<li>Visit <span class="texhtml mvar" style="font-style:italic;">t</span></li>
<li>traverse(right-child(<span class="texhtml mvar" style="font-style:italic;">t</span>))</li></ul></li></ul>
</div></div>
</div>
<p>One problem with this algorithm is that, because of its recursion, it uses stack space proportional to the height of a tree. If the tree is fairly balanced, this amounts to <span class="texhtml"><i>O</i>(log <i>n</i>)</span> space for a tree containing <span class="texhtml mvar" style="font-style:italic;">n</span> elements. In the worst case, when the tree takes the form of a <a href="Path_graph" title="Path graph">chain</a>, the height of the tree is <span class="texhtml mvar" style="font-style:italic;">n</span> so the algorithm takes <span class="texhtml"><i>O</i>(<i>n</i>)</span> space. A second problem is that all traversals must begin at the root when nodes have pointers only to their children. It is common to have a pointer to a particular node, but that is not sufficient to get back to the rest of the tree unless extra information is added, such as thread pointers.
</p><p>In this approach, it may not be possible to tell whether the left and/or right pointers in a given node actually point to children, or are a consequence of threading. If the distinction is necessary, adding a single bit to each node is enough to record it.
</p><p>In a 1968 textbook, <a href="Donald_Knuth" title="Donald Knuth">Donald Knuth</a> asked whether a non-recursive algorithm for in-order traversal exists, that uses no stack and leaves the tree unmodified.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> One of the solutions to this problem is tree threading, presented by Joseph M. Morris in 1979.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
In the 1969 follow-up edition,<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Knuth attributed the threaded tree representation to <a href="Alan_Perlis" title="Alan Perlis">Perlis</a> and Thornton (1960).<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Relation_to_parent_pointers">Relation to parent pointers</h3></div>
<p>Another way to achieve similar goals is to include a pointer in every node, to that node's parent node. Given that, the "next" node can always be reached, "right" pointers are still null whenever there are no right children. To find the "next" node from a node whose right pointer is null, walk up through "parent" pointers until reaching a node whose right pointer is not null, and is not the child you just came up from. That node is the "next" node, and after it come its descendants on the right.
</p><p>It is also possible to discover the parent of a node from a threaded binary tree, without explicit use of parent pointers or a stack, although it is slower. To see this, consider a node <i>k</i> with right child <i>r</i>. Then the left pointer of <i>r</i> must be either a child or a thread back to <i>k</i>. In the case that <i>r</i> has a left child, that left child must in turn have either a left child of its own or a thread back to <i>k</i>, and so on for all successive left children. So by following the chain of left pointers from <i>r</i>, we will eventually find a thread pointing back to <i>k</i>. The situation is symmetrically similar when <i>q</i> is the left child of <i>p</i>—we can follow <i>q'</i>s right children to a thread pointing ahead to <i>p</i>.
</p><p>
In <a href="Python_(programming_language)" title="Python (programming language)">Python</a>:</p><div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">def</span><span class="w"> </span><span class="nf">parent</span><span class="p">(</span><span class="n">node</span><span class="p">):</span>
<span class="k">if</span> <span class="n">node</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">root</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">node</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">node</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_thread</span><span class="p">(</span><span class="n">y</span><span class="p">):</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">right</span>
<span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">p</span><span class="o">.</span><span class="n">left</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">x</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">is_thread</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">left</span><span class="p">):</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">left</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">left</span>
<span class="k">return</span> <span class="n">p</span>
<span class="k">elif</span> <span class="n">is_thread</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">left</span>
<span class="k">if</span> <span class="n">p</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">p</span><span class="o">.</span><span class="n">right</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">y</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">is_thread</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">right</span><span class="p">):</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">right</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">right</span>
<span class="k">return</span> <span class="n">p</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">left</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">right</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Types">Types</h2></div>
<ol><li>Single threaded: each node is threaded towards <b>either</b> the in-order predecessor <b>or</b> successor (left <b>or</b> right).</li>
<li>Double threaded: each node is threaded towards <b>both</b> the in-order predecessor <b>and</b> successor (left <b>and</b> right).</li></ol>
<div class="mw-heading mw-heading2"><h2 id="The_array_of_in-order_traversal">The array of in-order traversal</h2></div>
<p>Threads are reference to the predecessors and successors of the node according to an inorder traversal.
</p><p><a href="Inorder" class="mw-redirect" title="Inorder">In-order</a> traversal of the threaded tree is <code>A,B,C,D,E,F,G,H,I</code>, the predecessor of <code>E</code> is <code>D</code>, the successor of <code>E</code> is <code>F</code>.
</p><p><span class="mw-default-size" typeof="mw:File"></span>
</p>
<div class="mw-heading mw-heading2"><h2 id="Example">Example</h2></div>
<p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>Let's make the Threaded Binary tree out of a normal binary tree:
</p><p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>The <a href="Inorder" class="mw-redirect" title="Inorder">in-order</a> traversal for the above tree is — D B A E C. So, the respective Threaded Binary tree will be --
</p><p><span class="mw-default-size" typeof="mw:File"></span>
</p>
<div class="mw-heading mw-heading2"><h2 id="Null_links">Null links</h2></div>
<p>In an <i>m</i>-way threaded binary tree with <i>n</i> nodes, there are <b><i>n</i>×<i>m</i> − (<i>n</i>−1)</b> void links.
</p>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Van Wyk, Christopher J. <u>Data Structures and C Programs</u>, Addison-Wesley, 1988, p. 175. <style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-201-16116-8</bdi>.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFKnuth1968" class="citation book cs1"><a href="Donald_Knuth" title="Donald Knuth">Knuth, D.E.</a> (1968). <i>Fundamental Algorithms</i>. The Art of Computer Programming. Vol. 1 (1st ed.). Reading/MA: Addison Wesley.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite id="CITEREFMorris1979" class="citation journal cs1">Morris, Joseph H. (1979). "Traversing binary trees simply and cheaply". <i><a href="Information_Processing_Letters" title="Information Processing Letters">Information Processing Letters</a></i>. <b>9</b> (5). <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2F0020-0190%2879%2990068-1">10.1016/0020-0190(79)90068-1</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFMatetiManghirmalani1988" class="citation journal cs1">Mateti, Prabhaker; Manghirmalani, Ravi (1988). "Morris' tree traversal algorithm reconsidered". <i>Science of Computer Programming</i>. <b>11</b>: <span class="nowrap">29–</span>43. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2F0167-6423%2888%2990063-9">10.1016/0167-6423(88)90063-9</a>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFKnuth1969" class="citation book cs1"><a href="Donald_Knuth" title="Donald Knuth">Knuth, D.E.</a> (1969). <i>Fundamental Algorithms</i>. The Art of Computer Programming. Vol. 1 (2 ed.). Addison Wesley.</cite> Hre: Sect.2.3.1 "Traversing Binary Trees".</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFPerlisThornton1960" class="citation journal cs1">Perlis, Alan Jay; Thornton, C. (Apr 1960). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F367177.367202">"Symbol manipulation by threaded lists"</a>. <i>Communications of the ACM</i>. <b>3</b> (4): <span class="nowrap">195–</span>204. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F367177.367202">10.1145/367177.367202</a></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://adtinfo.org/libavl.html/Threaded-Binary-Search-Trees.html">GNU libavl 2.0.2, Section on threaded binary search trees</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-02-21" href="https://en.wikipedia.org/wiki/?title=Threaded_binary_tree&oldid=1276876627">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>